const api = require('../../utils/api');
var app = getApp();

Page({
    data: {
        items: [],          // 从购物车传来的商品列表
        totalPrice: 0,      // 总价格
        paymentMethod: 'wechat' // 支付方式
    },
    
    onLoad: function(options) {
        try {
            // 解析从购物车传来的商品数据
            let items = [];
            
            // 检查是从购物车来的还是直接从商品详情页来的
            if (options.items) {
                // 从购物车来的，解析items参数
                items = JSON.parse(decodeURIComponent(options.items));
                
                if (!items ||!Array.isArray(items) || items.length === 0) {
                    throw new Error('商品列表为空或格式错误');
                }
            } else if (options.medicineId) {
                // 从商品详情页直接购买，构建单个商品对象
                items = [{
                    commodityId: options.medicineId,  // 修改为commodityId以匹配后端
                    name: decodeURIComponent(options.name),
                    price: parseFloat(options.price),
                    num: parseInt(options.num),
                    imageUrl: options.imageUrl? decodeURIComponent(options.imageUrl) : ''
                }];
            } else {
                throw new Error('未提供有效的商品数据');
            }
            
            // 过滤掉无效的商品项
            const validItems = items.filter(item => 
                item && 
               !isNaN(parseFloat(item.price)) && 
               !isNaN(parseInt(item.num)) && 
                item.num > 0
            );
            
            if (validItems.length === 0) {
                throw new Error('没有有效的商品项');
            }
            
            // 计算总价格
            let totalPrice = validItems.reduce((sum, item) => {
                return sum + (item.price * item.num);
            }, 0);
            
            this.setData({
                items: validItems,
                totalPrice: totalPrice.toFixed(2)
            });
            
        } catch (e) {
            console.error('解析商品数据失败:', e);
            wx.showToast({
                title: '订单数据异常，请重试',
                icon: 'none'
            });
            setTimeout(() => {
                wx.navigateBack();
            }, 1500);
        }
    },
    
    submitOrder: function() {
      if (this.data.items.length === 0) {
          wx.showToast({
              title: '没有选择商品',
              icon: 'none'
          });
          return;
      }
      
      // 构建订单数据
      const orderItems = this.data.items.map(item => {
          const commodityId = String(
              item.commodityId || item.commodityID || item.id || 
              item.medicineId || item.productId
          ).trim();
          if (!commodityId) {
              console.error('商品ID缺失，完整商品对象:', item);
              throw new Error('商品ID缺失');
          }
          return {
              commodityId: commodityId,
              num: parseInt(item.num) || 1,
              price: parseFloat(item.price) || 0
          };
      });
      
      // 如果后端只接收单个商品的 commodityID，我们需要选择一个商品来传递
      const selectedCommodity = orderItems[0];
      
      // 将 commodityId 转换为数字类型
      const commodityID = parseInt(selectedCommodity.commodityId);
      if (isNaN(commodityID)) {
          console.error('商品ID不是有效的数字:', selectedCommodity.commodityId);
          throw new Error('商品ID不是有效的数字');
      }
      
      // 构建符合后端接口要求的订单数据
      const order = {
        commodityId: commodityID,
          userId: String(app.globalData.userId || '1'),
          num: selectedCommodity.num,
          price: selectedCommodity.price,
          totalAmount: parseFloat(this.data.totalPrice),
          paymentMethod: this.data.paymentMethod,
          orderStatus: 'pending',
          createTime: new Date().toISOString()
      };
      
      wx.showLoading({ title: '提交中...' });
      console.log('前端请求体:', JSON.stringify(order, null, 2)); // 输出格式化请求体
      api.submitOrder(order)
      .then((res) => {
        console.log('原始响应对象:', res);
        console.log('原始响应对象:', res);
        console.log('可用字段:', Object.keys(res));  // 输出 ["data", "message"]
        console.log('message 字段值:', res.message);
          console.log('完整代理响应:', res); // 确保此处打印完整对象
           // 假设代理将状态码放在 res.data.status
        const statusCode = res.data.status || res.status || res.statusCode;
       // 直接根据 message 字段判断成功
       if (res.message === '支付成功') {
        this.handleOrderSuccess(res);
    } else {
        throw new Error('订单提交失败：' + (res.message || '未知错误'));
    }
})
      .catch((err) => {
          console.error('完整错误:', err);
          wx.showToast({ title: err.message || '提交失败', icon: 'none' });
      })
      .finally(() => {
          wx.hideLoading(); // 确保所有路径调用 hideLoading
        });
      },
      
  
      
    
    // 订单提交成功处理
    handleOrderSuccess: function(orderData) {
        wx.showToast({
            title: '订单提交成功',
            icon: 'success',
            duration: 1500
        });
        
        // 清空购物车数据
        app.globalData.cartList = [];
        app.globalData.buycar_num = 0;
        app.globalData.totalMoney = 0;
        
        setTimeout(() => {
            // 返回首页
            wx.switchTab({
                url: '/pages/index/index'
            });
        }, 1500);
        // 上一页传递数据时
wx.navigateTo({
  url: `pages/detail/detail?items=${encodeURIComponent(JSON.stringify(this.data.items))}`
});
    },
    
    // 支付方式切换
    onPaymentMethodChange: function(e) {
        this.setData({
            paymentMethod: e.detail.value
        });
    }
});